<?php
/*
 * @Descripttion:
 * @version:
 * @Author: ewgof
 * @Date: 2020-09-04 21:09:40
 * @LastEditors: ewgof
 * @LastEditTime: 2020-10-04 21:36:47
 */
namespace app\common\validate;

use Inhere\Validate\Validation;

class Login extends Validation
{
    public function rules(): array
    {
        return [
            // ['username', 'required|string', 'size', 'min' => 2, 'max' => 50],
            // ['password', 'required|password'],
            ['username,password', 'required'],
            ['username,password', 'string'],
            ['username', 'size', 'min' => 2, 'max' => 50],
            ['password', 'password'],
        ];
    }

    // 定义不同场景需要验证的字段。
    // 功能跟规则里的 'on' 类似，两者尽量不要同时使用，以免混淆。
    public function scenarios(): array
    {
        return [
            'register' => ['username', 'password'],
            'resetpassword' => ['username', 'password'],
            'admin_login' => ['username', 'password'],
        ];
    }


    // 定义字段翻译
    public function translates(): array
    {
        return [
            'username' => '用户名',
            'password' => '密码',
        ];
    }


    // 自定义验证器的提示消息, 默认消息请看 {@see ErrorMessageTrait::$messages}
    public function messages(): array
    {
        return [
          'username.required' => lang(10008),
          'username.string' => lang(10009),
          // 可以直接针对字段的某个规则进行消息定义
          'password.required' => lang(10010),
          'password.string' => lang(10011),
        ];
    }


    // 添加一个验证器。必须返回一个布尔值标明验证失败或成功
    protected function passwordValidator($password): bool
    {
        if (empty($password)) {
            return false;
        }

        if (preg_match(PASSWORD_REG, $password)) {
            return true;
        } else {
            return false;
        }
    }
}
